guint added,
gpointer user_data);
+static void gtk_flow_box_set_accept_unpaired_release (GtkFlowBox *box,
+ gboolean accept);
+
static void gtk_flow_box_check_model_compat (GtkFlowBox *box);
static void
PROP_MAX_CHILDREN_PER_LINE,
PROP_SELECTION_MODE,
PROP_ACTIVATE_ON_SINGLE_CLICK,
+ PROP_ACCEPT_UNPAIRED_RELEASE,
/* orientable */
PROP_ORIENTATION,
GtkAdjustment *hadjustment;
GtkAdjustment *vadjustment;
gboolean activate_on_single_click;
+ gboolean accept_unpaired_release;
guint16 min_children_per_line;
guint16 max_children_per_line;
GtkFlowBoxPrivate *priv = BOX_PRIV (box);
GtkFlowBoxChild *child;
- if (!priv->activate_on_single_click)
+ if (!priv->activate_on_single_click || !priv->accept_unpaired_release)
return;
child = gtk_flow_box_get_child_at_pos (box, x, y);
case PROP_ACTIVATE_ON_SINGLE_CLICK:
g_value_set_boolean (value, priv->activate_on_single_click);
break;
+ case PROP_ACCEPT_UNPAIRED_RELEASE:
+ g_value_set_boolean (value, priv->accept_unpaired_release);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
case PROP_ACTIVATE_ON_SINGLE_CLICK:
gtk_flow_box_set_activate_on_single_click (box, g_value_get_boolean (value));
break;
+ case PROP_ACCEPT_UNPAIRED_RELEASE:
+ gtk_flow_box_set_accept_unpaired_release (box, g_value_get_boolean (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
TRUE,
GTK_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+ props[PROP_ACCEPT_UNPAIRED_RELEASE] =
+ g_param_spec_boolean ("accept-unpaired-release",
+ P_("Accept unpaired release"),
+ P_("Accept an unpaired release event"),
+ FALSE,
+ GTK_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+
/**
* GtkFlowBox:homogeneous:
*
return BOX_PRIV (box)->activate_on_single_click;
}
-
+
+static void
+gtk_flow_box_set_accept_unpaired_release (GtkFlowBox *box,
+ gboolean accept)
+{
+ if (BOX_PRIV (box)->accept_unpaired_release == accept)
+ return;
+
+ BOX_PRIV (box)->accept_unpaired_release = accept;
+ g_object_notify_by_pspec (G_OBJECT (box), props[PROP_ACCEPT_UNPAIRED_RELEASE]);
+}
+
/* Selection handling {{{2 */
/**
GtkWidget *scrollable_parent;
GtkAdjustment *adjustment;
gboolean activate_single_click;
+ gboolean accept_unpaired_release;
GtkGesture *multipress_gesture;
PROP_0,
PROP_SELECTION_MODE,
PROP_ACTIVATE_ON_SINGLE_CLICK,
+ PROP_ACCEPT_UNPAIRED_RELEASE,
LAST_PROPERTY
};
gboolean modify);
static gboolean gtk_list_box_unselect_all_internal (GtkListBox *box);
static void gtk_list_box_selected_rows_changed (GtkListBox *box);
+static void gtk_list_box_set_accept_unpaired_release (GtkListBox *box,
+ gboolean accept);
static void gtk_list_box_multipress_gesture_pressed (GtkGestureMultiPress *gesture,
guint n_press,
case PROP_ACTIVATE_ON_SINGLE_CLICK:
g_value_set_boolean (value, priv->activate_single_click);
break;
+ case PROP_ACCEPT_UNPAIRED_RELEASE:
+ g_value_set_boolean (value, priv->accept_unpaired_release);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, property_id, pspec);
break;
case PROP_ACTIVATE_ON_SINGLE_CLICK:
gtk_list_box_set_activate_on_single_click (box, g_value_get_boolean (value));
break;
+ case PROP_ACCEPT_UNPAIRED_RELEASE:
+ gtk_list_box_set_accept_unpaired_release (box, g_value_get_boolean (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, property_id, pspec);
break;
TRUE,
G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+ properties[PROP_ACCEPT_UNPAIRED_RELEASE] =
+ g_param_spec_boolean ("accept-unpaired-release",
+ P_("Accept unpaired release"),
+ P_("Accept unpaired release"),
+ FALSE,
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+
g_object_class_install_properties (object_class, LAST_PROPERTY, properties);
/**
return BOX_PRIV (box)->activate_single_click;
}
+void
+gtk_list_box_set_accept_unpaired_release (GtkListBox *box,
+ gboolean accept)
+{
+ if (BOX_PRIV (box)->accept_unpaired_release == accept)
+ return;
+
+ BOX_PRIV (box)->accept_unpaired_release = accept;
+
+ g_object_notify_by_pspec (G_OBJECT (box), properties[PROP_ACCEPT_UNPAIRED_RELEASE]);
+}
static void
gtk_list_box_add_move_binding (GtkBindingSet *binding_set,
GtkListBoxPrivate *priv = BOX_PRIV (box);
GtkListBoxRow *row;
- if (!priv->activate_single_click)
+ if (!priv->activate_single_click || !priv->accept_unpaired_release)
return;
row = gtk_list_box_get_row_at_y (box, y);